TOP

SQL TOP, LIMIT, FETCH FIRST i ROWNUM

SQL SELECT TOP Opis

Wyrażenie SELECT TOP służy do określenia liczby rekordów do wybrania.

SQL SELECT TOP jest przydatny w przypadku dużych tabel zawierających tysiące rekordów, ponieważ zwrócenie dużej liczby rekordów może mieć wpływ na wydajność systemu.


Nie wszystkie systemy baz danych obsługują wyrażenie SELECT TOP. MySQL obsługuje wyrażenie LIMIT w celu wybrania ograniczonej liczby rekordów, podczas gdy Oracle używa FETCH FIRST n ROWS ONLY i ROWNUM.

SQL Server / MS Access Składnia:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition

MySQL Składnia:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 Składnia:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY

Przestarzała składnia Oracle:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

Przestarzała składnia Oracle (z ORDER BY):

SELECT *
FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s))
WHERE ROWNUM <= number

Baza demonstracyjna

Poniżej znajduje się przykład z tabeli „Customers” („Klienci”) bazy danych „Northwind”:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL TOP, LIMIT i FETCH FIRST Przykłady

Następująca instrukcja SQL wybiera pierwsze trzy rekordy z tabeli „Customers” (dla SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers

Poniższa instrukcja SQL przedstawia równoważny przykład dla MySQL:

Run SQLSELECT * 
FROM Customers 
LIMIT 3

Poniższa instrukcja SQL przedstawia równoważny przykład dla Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

SQL TOP PROCENT Przykład

Następująca instrukcja SQL wybiera pierwsze 50% rekordów z tabeli „Customers” (dla SQL Server/MS Access):

SELECT TOP 50 PERCENT * 
FROM Customers

Poniższa instrukcja SQL przedstawia równoważny przykład dla Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

Używanie wyrażenia WHERE

Następująca instrukcja SQL wybiera pierwsze trzy rekordy z tabeli „Customers”, gdzie kraj to „Germany” (dla SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers 
WHERE Country = 'Germany'

Poniższa instrukcja SQL przedstawia równoważny przykład dla MySQL:

Run SQLSELECT * 
FROM Customers 
WHERE Country = 'Germany' 
LIMIT 3

Poniższa instrukcja SQL przedstawia równoważny przykład dla Oracle:

SELECT * 
FROM Customers 
WHERE Country = 'Germany' 
FETCH FIRST 3 ROWS ONLY